/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gradius.Util;

import gradius.Elementos.Elemento;
import gradius.InterfaceGrafica.TelaGrafica;
import java.awt.Point;
import java.lang.Math;

/** Classe com métodos estáticos avulsos
 * @author Eduardo
 */
public final class Util
{
    /** Método que testa as colisões dos elementos
     *
     * @param e1
     * @param e2
     * @return boolean - Houve colisão
     */
    public static boolean colisao(Elemento e1, Elemento e2) //testa a colisão por negação. Testa se não há colisão.
    {
        if (e1.getElementoCoordenada().getCoordX() > e2.getElementoCoordenada().getCoordX() + e2.getElementoTamanho().getCoordX()) return false; //obj1 está a direita de obj2
        if (e1.getElementoCoordenada().getCoordY() > e2.getElementoCoordenada().getCoordY() + e2.getElementoTamanho().getCoordY()) return false; //obj1 está abaixo de obj
        if (e1.getElementoCoordenada().getCoordX() + e1.getElementoTamanho().getCoordX() < e2.getElementoCoordenada().getCoordX()) return false; //obj1 está a esquerda de obj2
        if (e1.getElementoCoordenada().getCoordY() + e1.getElementoTamanho().getCoordY() < e2.getElementoCoordenada().getCoordY()) return false; //obj1 está acima de obj2

        return true; //existe colisão
    }

    /** Método que testa se o elemento está fora da tela
     * @param e
     * @param tela - Painel de desenho do jogo
     * @return boolean - Verdadeiro se está fora da tela
     */
    public static boolean foraDaTela(Elemento e, TelaGrafica tela)
    {
        if (e.getElementoCoordenada().getCoordX() + e.getElementoTamanho().getCoordX() < 0)
        {
            return true;
        }
        if (e.getElementoCoordenada().getCoordY() + e.getElementoTamanho().getCoordY() < 0)
        {
            return true;
        }
        if (e.getElementoCoordenada().getCoordY() > tela.getBounds().getHeight())
        {
            return true;
        }
        return false;
    }

    /** método que testa se o tiro está no domínio da tela
    *
    * @param e - Elemento que está executando o disparo
    * @param tela - tela do jogo
    * @return boolean - verdadeiro se está dentro do dominio da tela e falso caso contrario
    */
    public static boolean foraDaTelaTiro(Elemento e, TelaGrafica tela)
    {
        if (e.getElementoCoordenada().getCoordX() + e.getElementoTamanho().getCoordX() < 0)
        {
            return true;
        }
        if (e.getElementoCoordenada().getCoordX() > tela.getBounds().getWidth())
        {
            return true;
        }
        if (e.getElementoCoordenada().getCoordY() + e.getElementoTamanho().getCoordY() < 0)
        {
            return true;
        }
        if (e.getElementoCoordenada().getCoordY() > tela.getBounds().getHeight())
        {
            return true;
        }
        return false;
    }

}
